package com.antler.smt.service.admin;

import com.antler.smt.entity.*;
import com.antler.smt.enums.ResultCodeEnum;
import com.antler.smt.request.admin.EditOrderStatusReq;
import com.antler.smt.request.base.BasePageReq;
import com.antler.smt.request.portal.OrderLogisticsReq;
import com.antler.smt.response.admin.OrderManageListResp;
import com.antler.smt.response.base.Result;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 订单管理Service
 *
 * @author zhangyi
 * @date 2018/4/28 11:06
 */
public interface ManageOrderService {

    /**
     *  分类获取订单列表实体
     *
     * @param orderStatus 订单状态
     * @param pageReq 分页信息
     * @param userId 当前项目专员的id
     * @return
     */
    Result<PageInfo<OrderManageListResp>> getManageList(List<Integer> orderStatus,
                                                        BasePageReq pageReq,
                                                        Long userId);
    /**
     *  获取服务商的用户的昵称
     *
     * @param supplierId
     * @return
     */
    Result<String> getSupplierMemberInfo(Long supplierId);

    /**
     *  获取采购商账户信息（手机号/邮箱）
     *
     * @param purchaserId
     * @return
     */
    Result<MemberEntity> getPurchaserInfo(Long purchaserId);

    /**
     *  获取服务商详情
     *
     * @param supplierId
     * @return
     */
    Result<SupplierEntity> getSupplierInfo(Long supplierId);

    /**
     *  获取发布需求实体
     *
     * @param requirementId
     * @return
     */
    Result<RequirementEntity> orderManageRequirement(Long requirementId);

    /**
     *  获取当前收货信息
     *
     * @param orderId
     * @return
     */
    Result<OrderLogisticsEntity> orderManageLogistics(Long orderId);

    /**
     * 获取当前的评价信息
     *
     * @param orderId
     * @return
     */
    Result<OrderCommentEntity> orderManagecomment(Long orderId);

    /**
     *  获取订单详细信息
     *
     * @param orderId
     * @return
     */
    Result orderManageInfo(Long orderId);

    /**
     * 项目专员代发货
     *
     * @param orderId
     * @param orderLogisticsReq
     * @return
     */
    Result<ResultCodeEnum> userTakeSend(Long orderId,OrderLogisticsReq orderLogisticsReq);


    /**
     * 修改订单状态
     *
     * @param request
     * @return
     */
    Result<ResultCodeEnum> editStatus(EditOrderStatusReq request);

}
